package com.bupt.vueblog.service;

import com.bupt.vueblog.domain.dto.ArticleInsertDTO;
import com.bupt.vueblog.domain.dto.ArticleSelectDTO;
import com.bupt.vueblog.domain.dto.ArticleUpdateDTO;
import com.bupt.vueblog.domain.dto.DetailInfoDTO;
import com.bupt.vueblog.domain.entity.Relation;
import com.bupt.vueblog.domain.vo.AllArticleVO;
import com.bupt.vueblog.domain.vo.BriefArticleVO;
import com.bupt.vueblog.domain.vo.DetailArticleVO;

import java.util.List;

/**
 * @author 谭继好
 * @Description
 * @date 2024-04-09 13:38
 */
public interface ArticleService {

    List<BriefArticleVO> getAllBrief(Integer userId);

    List<BriefArticleVO> getByUserName(DetailInfoDTO data);

    List<BriefArticleVO> getBriefByUser(Integer userId);

    List<BriefArticleVO> getBriefByTitle(ArticleSelectDTO data);

    List<BriefArticleVO> getDeleted(Integer userId);

    List<BriefArticleVO> getLikeByUser(Integer userId);

    List<BriefArticleVO> getByTitleLike(DetailInfoDTO data);

    List<BriefArticleVO> getByTitleCollect(DetailInfoDTO data);

    List<BriefArticleVO> getCollectByUser(Integer userId);

    AllArticleVO getAllDetail(Integer userId, Integer articleId);

    DetailArticleVO getUpdateDetail(Integer articleId);

    void insert(ArticleInsertDTO data);

    void changeDetail(ArticleUpdateDTO data);

    void addNum(Relation data);

    void subNum(Relation data);

    void hide(Integer articleId);

    void recover(Integer articleId);

    void delete(Integer articleId);

    void deleteByUser(Integer userId);
}
